问题描述
- opencv将图片转为HSV时总是报错
- if(m_pVideoInfo->m_pCapture){
IplImage* frame*src_image=NULL;
frame = cvQueryFrame(m_pVideoInfo->m_pCapture);
if(frame)
{
cvCopy(framem_pVideoInfo->m_pFrameImage);
int i bin_w c;
if(!m_pVideoInfo->m_pFrameImage)
{
m_pVideoInfo->m_pFrameImage = cvCreateImage( cvGetSize(frame) 8 3 );//
m_pVideoInfo->m_pFrameImage->origin = frame->origin;
hsv = cvCreateImage( cvGetSize(frame) 8 3 );
hue = cvCreateImage( cvGetSize(frame) 8 1 );
mask = cvCreateImage( cvGetSize(frame) 8 1 );//分配掩膜图像空间
backproject = cvCreateImage( cvGetSize(frame) 8 1 );//分配反向投影图空间,大小一样,单通道
hist = cvCreateHist( 1 &hdims CV_HIST_ARRAY &hranges 1 ); //分配建立直方图空间histimg = cvCreateImage( cvSize(320200) 8 3 );//分配用于画直方图的空间 cvZero( histimg );//背景为黑色 } cvCopy( frame m_pVideoInfo->m_pFrameImage 0 ); cvCvtColor( m_pVideoInfo->m_pFrameImage hsv CV_BGR2HSV ); // 把图像从RGB表色系转为HSV表色系
这是MFC程序中的一部分,capture指针打开了一个视频文件
但是每次打开视频的时候都会报错,只要把最后一段代码注释了就没问题了
解决方案
#include <math.h>#include ""highgui.h""#include ""cv.h""#include ""time.h""#include <iostream>int main(){ IplImage* image = cvLoadImage(""test.png""); IplImage* hsv = cvCreateImage( cvGetSize(image) 8 3 ); cvCvtColor(imagehsvCV_BGR2HSV); cvNamedWindow(""saturate_SV""CV_WINDOW_AUTOSIZE); cvShowImage(""saturate_SV""hsv); cvWaitKey(0); cvReleaseImage(&hsv); cvDestroyWindow(""saturate_SV""); return 0;}
解决方案二:
http://www.ylzx8.cn/duomeiti/image/1004178.html
时间: 2025-01-20 23:01:34