2020-04-19 04:18:14 -0600
| received badge | ● Famous Question
(source)
|
2017-12-05 03:40:54 -0600
| received badge | ● Notable Question
(source)
|
2017-05-31 14:47:55 -0600
| received badge | ● Popular Question
(source)
|
2015-01-02 09:20:03 -0600
| commented answer | OpenCV v2.4.9 equalizeHist() Function CV_Assert Thank you for your help I couldn't saw that I didn't use gray instead of img :) |
2015-01-02 09:18:48 -0600
| received badge | ● Scholar
(source)
|
2015-01-02 09:12:25 -0600
| commented answer | OpenCV v2.4.9 equalizeHist() Function CV_Assert OK, I solved this by simply adding the original channel controls to the code. Which is, Mat gray;
if(img.channels() == 3){
cvtColor(img, gray, CV_BGR2GRAY);
}
else if(img.channels() == 4){
cvtColor(img, gray, CV_BGRA2GRAY);
}
else{
gray = img;
}
|
2015-01-02 09:10:18 -0600
| commented answer | OpenCV v2.4.9 equalizeHist() Function CV_Assert Now I get this assertion, OpenCV Error: Assertion failed (scn ==3 || scn == 4) in cv::cvtColor, file ..\..\..\..\opencv\modules\imgproc\src\color.cpp, line 3737
|
2015-01-02 06:59:16 -0600
| asked a question | OpenCV v2.4.9 equalizeHist() Function CV_Assert Hi everyone, in my project I get webcam images and try to apply histogram equalization. But when I use equalizeHist() function I get CV_Assert. Here, it's the message I get when I run the program.
OpenCV Error: Assertion failed (src.type() == CV_8UC1) in cv::equalizeHist, file ........\opencv\modules\imgproc\src\histogram.cpp, line 3128.
I don't know how to convert my src image to CV_8UC1. Is there anyone who can help me? Thanks, already. void detectObjectsCustom(const Mat &img, CascadeClassifier &cascade, vector<Rect> &objects, int flags, Size minFeatureSize, float searchScaleFactor, int minNeighbors, const int scaledWidth = 320){
Mat gray;
if(img.channels() == 3){
cvtColor(img, gray, CV_BGR2GRAY);
}
else if(img.channels() == 4){
cvtColor(img, gray, CV_BGRA2GRAY);
}
else{
gray = img;
}
Mat inputImg;
float scale = img.cols/(float)scaledWidth;
if(img.cols > scaledWidth){
int scaledHeight = cvRound(img.rows / scale);
resize(img, inputImg, Size(scaledWidth, scaledHeight));
}
else{
inputImg = img;
}
cvtColor(inputImg,inputImg,CV_8UC1);
Mat equalizedImg;
equalizeHist(inputImg, equalizedImg);
cascade.detectMultiScale(equalizedImg, objects, searchScaleFactor, minNeighbors, flags, minFeatureSize);
if(img.cols > scaledWidth){
for(int i=0; i < (int)objects.size(); i++){
objects[i].x = cvRound(objects[i].x * scale);
objects[i].y = cvRound(objects[i].y * scale);
objects[i].width = cvRound(objects[i].width * scale);
objects[i].height = cvRound(objects[i].height * scale);
}
}
for(int i=0; i < (int)objects.size(); i++){
if(objects[i].x < 0)
objects[i].x = 0;
if(objects[i].y < 0)
objects[i].y = 0;
if(objects[i].x + objects[i].width > img.cols)
objects[i].x = img.cols - objects[i].width;
if(objects[i].y + objects[i].height > img.rows)
objects[i].y = img.rows - objects[i].height;
} }
|
2014-12-29 17:10:47 -0600
| received badge | ● Editor
(source)
|
2014-12-29 16:03:04 -0600
| asked a question | OpenCV v2.4.9 equalizeHist() Function Memory Leek Hi everyone, in my project I get webcam images and try to apply histogram equalization. But when I use equalizeHist() function I get Memory Leek message. Is there anyone who can help me? Thanks, already. void detectObjectsCustom(const Mat &img, CascadeClassifier &cascade, vector<Rect> &objects, int flags, Size minFeatureSize, float searchScaleFactor, int minNeighbors, const int scaledWidth = 320){
Mat gray;
if(img.channels() == 3){
cvtColor(img, gray, CV_BGR2GRAY);
}
else if(img.channels() == 4){
cvtColor(img, gray, CV_BGRA2GRAY);
}
else{
gray = img;
}
Mat inputImg;
float scale = img.cols/(float)scaledWidth;
if(img.cols > scaledWidth){
int scaledHeight = cvRound(img.rows / scale);
resize(img, inputImg, Size(scaledWidth, scaledHeight));
}
else{
inputImg = img;
}
cvtColor(inputImg,inputImg,CV_8UC1);
Mat equalizedImg;
equalizeHist(inputImg, equalizedImg);
cascade.detectMultiScale(equalizedImg, objects, searchScaleFactor, minNeighbors, flags, minFeatureSize);
if(img.cols > scaledWidth){
for(int i=0; i < (int)objects.size(); i++){
objects[i].x = cvRound(objects[i].x * scale);
objects[i].y = cvRound(objects[i].y * scale);
objects[i].width = cvRound(objects[i].width * scale);
objects[i].height = cvRound(objects[i].height * scale);
}
}
for(int i=0; i < (int)objects.size(); i++){
if(objects[i].x < 0)
objects[i].x = 0;
if(objects[i].y < 0)
objects[i].y = 0;
if(objects[i].x + objects[i].width > img.cols)
objects[i].x = img.cols - objects[i].width;
if(objects[i].y + objects[i].height > img.rows)
objects[i].y = img.rows - objects[i].height;
}}
I think I solved it. I put equalizeHist(inputImg, equalizedImg); inside of a try/catch block. I think it worked. |
2014-10-03 08:08:33 -0600
| received badge | ● Supporter
(source)
|